package com.smart.community.user.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.smart.community.commons.base.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 用户上传文件实体类
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 * @version 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_user_upload_file")
public class UserUploadFile extends BaseEntity {
	private static final long serialVersionUID = 1461541777813783076L;

	/**
     * 上传用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 原始文件名
     */
    @TableField("file_name")
    private String fileName;

    /**
     * 文件存储路径
     */
    @TableField("file_path")
    private String filePath;

    /**
     * 文件访问URL
     */
    @TableField("file_url")
    private String fileUrl;

    /**
     * 文件大小(字节)
     */
    @TableField("file_size")
    private Long fileSize;

    /**
     * 文件类型(MIME类型)
     */
    @TableField("file_type")
    private String fileType;

    /**
     * 文件扩展名
     */
    @TableField("file_extension")
    private String fileExtension;

    /**
     * MinIO存储桶名称
     */
    @TableField("bucket_name")
    private String bucketName;

    /**
     * MinIO对象名称
     */
    @TableField("object_name")
    private String objectName;

    /**
     * 上传类型：AVATAR-头像，DOCUMENT-文档，IMAGE-图片，OTHER-其他
     */
    @TableField("upload_type")
    private String uploadType;

    /**
     * 上传来源：WEB-网页端，APP-移动端
     */
    @TableField("upload_source")
    private String uploadSource;

    /**
     * 文件MD5哈希值
     */
    @TableField("md5_hash")
    private String md5Hash;

    /**
     * 文件SHA256哈希值
     */
    @TableField("sha256_hash")
    private String sha256Hash;

    /**
     * 是否为图片：0-否，1-是
     */
    @TableField("is_image")
    private Integer isImage;

    /**
     * 图片宽度(像素)
     */
    @TableField("image_width")
    private Integer imageWidth;

    /**
     * 图片高度(像素)
     */
    @TableField("image_height")
    private Integer imageHeight;

    /**
     * 文件状态：0-已删除，1-正常，2-待审核
     */
    @TableField("status")
    private Integer status;

    /**
     * 下载次数
     */
    @TableField("download_count")
    private Integer downloadCount;

    /**
     * 查看次数
     */
    @TableField("view_count")
    private Integer viewCount;

    /**
     * 过期时间
     */
    @TableField("expire_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expireTime;
} 